<template>
  <page-header-wrapper>
    <a-card :bordered="false">
      <a-button :loading="syncFlag" style="margin-left: 16px;" type="primary" @click="toSyncDeliveryData">同步投递信息（大约30分钟）</a-button>
      <a-button :loading="syncFlag" style="margin-left: 16px;" type="primary" @click="toSyncDeliveryDetailData">同步投递段（大约20分钟）</a-button>
      <a-button :loading="syncFlag" style="margin-left: 16px;" type="primary" @click="toSyncDeliveryStationData">同步投递站（大约30分钟）</a-button>
    </a-card>
  </page-header-wrapper>
</template>

<script>
import { notification } from 'ant-design-vue'
import { syncDeliveryStation, syncDeliveryDetail, syncOrder } from '@/api/manage'
export default {
  name: 'SystemSettingLists',
  data () {
    return {
      syncFlag: false
    }
  },
  methods: {
    toSyncDeliveryData () {
      if (this.syncFlag) return
      const _selft = this
      this.$confirm({
        title: '提示',
        content: '确定开始同步投递信息数据吗？此过程大约需要30分钟！',
        onOk () {
          _selft.syncFlag = true
          _selft.$message.success('投递信息数据已开始同步（大约需要30分钟）！')
          notification.success({
            message: '提示',
            description: '投递信息数据已经开始同步（大约需要30分钟），请勿重复点击！'
          })
          const sT = setTimeout(() => {
            _selft.syncFlag = false
          }, 30 * 1000 * 60)
          syncOrder().then(res => {
            _selft.$message.success('投递信息数据同步完成！')
            notification.success({
              message: '提示',
              description: '投递信息数据同步完成！'
            })
            _selft.queryParam = {}
            _selft.$refs.table.refresh(true)
          }).catch(e => {
            _selft.$message.error('同步投递信息数据出错！')
            notification.error({
              message: '提示',
              description: '同步投递信息数据出错！'
            })
            clearTimeout(sT)
            _selft.syncFlag = false
          })
        },
        onCancel () {}
      })
    },
    toSyncDeliveryDetailData () {
      if (this.syncFlag) return
      const _selft = this
      this.$confirm({
        title: '提示',
        content: '确定开始同步投递段数据吗？此过程大约需要20分钟！',
        onOk () {
          _selft.syncFlag = true
          _selft.$message.success('投递段数据已开始同步（大约需要20分钟）！')
          notification.success({
            message: '提示',
            description: '投递段数据已经开始同步（大约需要20分钟），请勿重复点击！'
          })
          const sT = setTimeout(() => {
            _selft.syncFlag = false
          }, 30 * 1000 * 60)
          syncDeliveryDetail().then(res => {
            _selft.$message.success('投递段数据同步完成！')
            notification.success({
              message: '提示',
              description: '投递段数据同步完成！'
            })
            _selft.queryParam = {}
            _selft.$refs.table.refresh(true)
          }).catch(e => {
            _selft.$message.error('同步投递段数据出错！')
            notification.error({
              message: '提示',
              description: '同步投递段数据出错！'
            })
            clearTimeout(sT)
            _selft.syncFlag = false
          })
        },
        onCancel () {}
      })
    },
    toSyncDeliveryStationData () {
      if (this.syncFlag) return
      const _selft = this
      this.$confirm({
        title: '提示',
        content: '确定开始同步投递站数据吗？此过程大约需要30分钟！',
        onOk () {
          _selft.syncFlag = true
          _selft.$message.success('投递站数据已开始同步（大约需要30分钟）！')
          notification.success({
            message: '提示',
            description: '投递站数据已经开始同步（大约需要30分钟），请勿重复点击！'
          })
          const sT = setTimeout(() => {
            _selft.syncFlag = false
          }, 30 * 1000 * 60)
          syncDeliveryStation().then(res => {
            _selft.$message.success('投递站数据同步完成！')
            notification.success({
              message: '提示',
              description: '投递站数据同步完成！'
            })
            _selft.queryParam = {}
            _selft.$refs.table.refresh(true)
          }).catch(e => {
            _selft.$message.error('同步投递站数据出错！')
            notification.error({
              message: '提示',
              description: '同步投递站数据出错！'
            })
            clearTimeout(sT)
            _selft.syncFlag = false
          })
        },
        onCancel () {}
      })
    }
  }
}
</script>

<style lang="scss" scoped>

</style>
